/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Session;

import ObjetoDominio.Archivo;
import ObjetoDominio.Usuario;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *Clase que se encarga de escritura y lectura del log
 * @author opr
 */
public class ArchivoLog {
    
    private static ArchivoLog _instancia = new ArchivoLog();
    private String _ruta = "log.txt";
    
    private ArchivoLog(){
        
    }
    
    public synchronized  static ArchivoLog ObtenerArchivoLog(){
        return _instancia;
    }
    
    public void write(Usuario usuario, Archivo archivo){
        try {

            
            File TextFile = new File(_ruta);
            FileWriter bufferedWriter = new FileWriter(TextFile, true);
            bufferedWriter.write(
                    usuario.getNombre()+";"+archivo.getNombre()+";"+
                    archivo.getRuta()+";"+archivo.getTamaño()+";"+archivo.getDescargado()+";"
                    +archivo.isCargando()+";"+archivo.isPausado()+";"+(new Date()).getTime()+";\n");
            bufferedWriter.flush();
            bufferedWriter.close();

        } catch (IOException e) {
            System.out.println(e);
                e.printStackTrace();
        }
    }
    
    public List<Archivo> ObtenerArchivos(Usuario usuario){
       List<Archivo> retorno = new ArrayList<Archivo>();
        try {
            BufferedReader bufferedReader = new BufferedReader(new FileReader(_ruta));
            String line = "";
            while((line = bufferedReader.readLine())!=null){
                
                String[] splits = line.split(";");
                if(usuario.getNombre().equalsIgnoreCase(splits[0])){
                 Archivo archivo = new Archivo();   
                 archivo.setNombre(splits[1]);
                 archivo.setRuta(splits[2]);
                 archivo.setTamaño(Long.parseLong(splits[3]));
                 archivo.setDescargado(Long.parseLong(splits[4]));
                 archivo.setCargando(Boolean.parseBoolean(splits[5]));
                 archivo.setPausado(Boolean.parseBoolean(splits[6]));
                 archivo.setFecha(new Date(Long.parseLong(splits[7])));
                 retorno.add(archivo);
                }
            }
            bufferedReader.close();
            return retorno;
        } catch (FileNotFoundException e) {return retorno;
        } catch (IOException e) {return retorno;
        }catch(Exception e){System.out.println(e);return retorno;
            
        }
    }
    
}
